package com.imut.lagain.service;
import org.slf4j.LoggerFactory;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.imut.lagain.entity.HealthReminder;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 健康提醒服务接口
 */
public interface IHealthReminderService extends IService<HealthReminder> {
    
    /**
     * 根据用户ID和提醒时间范围查询健康提醒
     * @param userId 用户ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 健康提醒列表
     */
    List<HealthReminder> findByUserIdAndTimeRange(Long userId, LocalDateTime startTime, LocalDateTime endTime);
    
    /**
     * 根据用户ID和提醒类型查询健康提醒
     * @param userId 用户ID
     * @param reminderType 提醒类型
     * @param page 分页参数
     * @return 健康提醒分页列表
     */
    IPage<HealthReminder> findByUserIdAndType(Long userId, String reminderType, Page<HealthReminder> page);
    
    /**
     * 查询待处理的健康提醒
     * @param userId 用户ID
     * @param currentTime 当前时间
     * @return 健康提醒列表
     */
    List<HealthReminder> findPendingReminders(Long userId, LocalDateTime currentTime);
    
    /**
     * 标记提醒为已完成
     * @param id 提醒ID
     * @return 是否成功
     */
    boolean markAsCompleted(Long id);
    
    /**
     * 根据用户ID查询未完成的提醒数量
     * @param userId 用户ID
     * @return 未完成的提醒数量
     */
    Long countPendingReminders(Long userId);
    
    /**
     * 统计用户健康提醒完成情况
     * @param userId 用户ID
     * @return 统计结果
     */
    Map<String, Object> getReminderStatistics(Long userId);
    
    /**
     * 获取症状分析
     * @param userId 用户ID
     * @return 症状分析结果
     */
    Map<String, Object> getSymptomAnalysis(Long userId);
    
    /**
     * 获取健康小贴士
     * @param userId 用户ID
     * @param category 分类
     * @return 健康小贴士列表
     */
    List<Map<String, Object>> getHealthTips(Long userId, String category);
}
